Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>High Level Assembly</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/High_Level_Assembly"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-High_Level_Assembly rootpage-High_Level_Assembly skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">High Level Assembly</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">This article is about a particular high-level assembly language. For the general concept, see <a href="High-level_assembler" title="High-level assembler">High-level assembler</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1248332772">
/* start https://en.wikipedia.org/ */


.mw-parser-output .multiple-issues-text{width:95%;margin:0.2em 0}.mw-parser-output .multiple-issues-text>.mw-collapsible-content{margin-top:0.3em}.mw-parser-output .compact-ambox .ambox{border:none;border-collapse:collapse;background-color:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .mw-parser-output .compact-ambox .ambox.mbox-small-left{font-size:100%;width:auto;margin:0}.mw-parser-output .compact-ambox .ambox .mbox-text{padding:0!important;margin:0!important}.mw-parser-output .compact-ambox .ambox .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:disc}body.skin-minerva .mw-parser-output .multiple-issues-text>.mw-collapsible-toggle,.mw-parser-output .compact-ambox .ambox .mbox-image,.mw-parser-output .compact-ambox .ambox .mbox-imageright,.mw-parser-output .compact-ambox .ambox .mbox-empty-cell,.mw-parser-output .compact-ambox .hide-when-compact{display:none}


/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">High Level Assembly (HLA)</th></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data"><a href="Randall_Hyde" title="Randall Hyde">Randall Hyde</a></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">2.16
/ July&nbsp;6, 2011<span style="display:none">&nbsp;(<span class="bday dtstart published updated">2011-07-06</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Repository_(version_control)" title="Repository (version control)">Repository</a></th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://sourceforge.net/projects/hlav1">sourceforge<wbr>.net<wbr>/projects<wbr>/hlav1</a></span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="Assembly_language" title="Assembly language">Assembly language</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="Windows" class="mw-redirect" title="Windows">Windows</a>, <a href="Linux" title="Linux">Linux</a>, <a href="FreeBSD" title="FreeBSD">FreeBSD</a>, <a href="MacOS" title="MacOS">macOS</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="IA-32" title="IA-32">IA-32</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Available in</th><td class="infobox-data">English</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Assembly_language#Assembler" title="Assembly language">Assembler</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Public_domain" title="Public domain">Public domain</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://plantation-productions.com/Webster/HighLevelAsm/index.html">plantation-productions<wbr>.com<wbr>/Webster<wbr>/HighLevelAsm<wbr>/index<wbr>.html</a></span></td></tr></tbody></table>
<p><b>High-Level Assembly</b> (<b>HLA</b>) is a <a href="High-level_assembler" title="High-level assembler">language</a> developed by <a href="Randall_Hyde" title="Randall Hyde">Randall Hyde</a> that enables the use of higher-level language constructs to aid both novice and experienced assembly developers. It supports advanced <a href="Data_type" title="Data type">data types</a> and <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a>. Its <a href="Syntax" title="Syntax">syntax</a> is loosely based on several <a href="High-level_programming_language" title="High-level programming language">high-level programming languages</a> (HLLs), such as <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>, <a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="Modula-2" title="Modula-2">Modula-2</a>, and <a href="C%2B%2B" title="C++">C++</a>, to facilitate the creation of readable assembly language programs and enable HLL programmers to learn HLA quickly.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Origins_and_Goals">Origins and Goals</h2></div>
<p>HLA was initially designed as a tool for teaching assembly language programming at the college and university level. The objective was to leverage students' existing programming knowledge to accelerate their learning of assembly language. Most students in assembly language programming courses are already familiar with high-level <a href="Control_flow" title="Control flow">control flow</a> structures like IF, WHILE, and FOR. HLA allows students to immediately apply this knowledge to assembly language coding early in the course. This enables them to master other prerequisite subjects in assembly before learning how to code low-level forms of these control structures. The book <i>The Art of Assembly Language Programming</i> by Randall Hyde utilizes HLA for this purpose.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="High_vs._low-level_assembler">High vs. low-level assembler</h2></div>
<p>HLA v2.x supports the same low-level machine instructions as a regular low-level assembler. High-end assemblers also support high-level-language-like statements (such as IF and WHILE) and more advanced data declaration directives, including <a href="Data_structure" title="Data structure">structures</a>-<a href="Record_(computer_science)" title="Record (computer science)">records</a>, unions, and even <a href="Class_(computer_programming)" title="Class (computer programming)">classes</a>.
</p><p>Examples of high-end assemblers include HLA, <a href="Microsoft_Macro_Assembler" title="Microsoft Macro Assembler">Microsoft Macro Assembler</a> (MASM), and <a href="Turbo_Assembler" title="Turbo Assembler">Turbo Assembler</a> (TASM) on the Intel <a href="X86" title="X86">x86</a> processor family.
</p><p>Unlike most other assembler tools, the HLA compiler includes a <i>Standard Library</i> with thousands of <a href="Subroutine" class="mw-redirect" title="Subroutine">functions, proceduress</a> and <a href="Macro_(computer_science)" title="Macro (computer science)">macross</a> that can be used to create full applications with the ease of a high-level language. While assembly language <a href="Library_(computing)" title="Library (computing)">libraries</a> are not new, a language that includes a large standardized library encourages programmers to use library code rather than writing their own functions.
</p><p>HLA supports all the same low-level machine instructions as other x86 assemblers. Furthermore, HLA's high-level control structures are based on those found in MASM and TASM, whose HLL-like features predated HLA by several years. In HLA, low-level assembly code can be written just as easily as with any other assembler by ignoring the HLL control constructs. Unlike HLLs like Pascal and C(++), HLA does not require inline asm statements. HLA's HLL-like features provide a learning aid for beginning assembly programmers by easing the learning curve, with the expectation that they will discontinue using those statements once they master the low-level instruction set. In practice, many experienced programmers continue to use HLL-like statements in HLA, MASM, and TASM long after mastering the low-level instruction set, typically to improve readability.
</p><p>It is also possible to write <i>high-level</i> programs using HLA, which reduces the tedium of low-level assembly language programming. Some assembly language programmers reject HLA outright because it allows programmers to do this. However, supporting both high-level and low-level programming gives any language a broader range of applicability.
</p>
<div class="mw-heading mw-heading2"><h2 id="Distinguishing_features">Distinguishing features</h2></div>
<p>Two HLA features distinguish it from other x86 assemblers: its powerful macro system (compile-time language) and the HLA Standard Library.
</p>
<div class="mw-heading mw-heading3"><h3 id="Macro_system">Macro system</h3></div>
<p>HLA's compile-time language allows easy extension of the language, even enabling the creation of small <a href="Domain-specific_language" title="Domain-specific language">domain-specific languages</a> to simplify common programming problems. The macro <code>stdout.put</code> is a good example of a sophisticated macro that can simplify programming. Consider the following invocation of that macro:
</p><p><code>stdout.put( "I=", i, " s=", s, " u=", u, " r=", r:10:2, nl );</code>
</p><p>The stdout.put macro processes each argument to determine its type and then calls an appropriate procedure in the HLA Standard Library to handle the output of each operand.
</p><p>Most assemblers offer some macro capabilities. HLA's advantage over other assemblers is its ability to process macro arguments like <code>r:10:2</code> using HLA's extensive compile-time string functions. HLA's macro facilities can also infer variable types and use that information to direct macro expansion.
</p><p>HLA's macro language provides a special <i>Context-Free</i> macro facility. This feature allows easy writing of macros that span other code sections via a <i>starting</i> and <i>terminating</i> macro pair (along with optional <i>intermediate</i> macro invocations available only between the start–terminate macros). For example, one can write a fully recursive-nestable SWITCH–CASE–DEFAULT–ENDSWITCH statement using this macro facility.
</p><p>Because of the HLA macro facilities' context-free design, these switch..case..default..endswitch statements can be nested without conflicting code emission.
</p>
<div class="mw-heading mw-heading3"><h3 id="Compile-Time_Language">Compile-Time Language</h3></div>
<p>The HLA macro system is a subset of the larger HLA <i>Compile-Time Language</i> (CTL). The HLA CTL is an interpreted language available within an HLA program source file; hence the name <i>compile-time language</i>.
</p><p>The HLA CTL includes control statements such as #IF, #WHILE, #FOR, #PRINT, and an <a href="Assignment_(computer_science)" title="Assignment (computer science)">assignment statement</a>. One can also create compile-time variables and constants, including structured data types like records and unions. The HLA CTL also provides hundreds of built-in functions, including a rich set of string and pattern-matching functions. The HLA CTL allows programmers to create CTL <i>programs</i> that scan and parse strings, enabling the creation of <i>embedded <a href="Domain-specific_language" title="Domain-specific language">domain-specific languages</a></i> (EDSLs, also termed <i><a href="Mini-language" class="mw-redirect" title="Mini-language">mini-languages</a></i>). The <code>stdout.put</code> macro mentioned earlier is an example of such an EDSL. The put macro (in the stdout namespace, hence <i>stdout</i>.put) parses its macro parameter list and emits the code that will print its operands.
</p>
<div class="mw-heading mw-heading3"><h3 id="Standard_library">Standard library</h3></div>
<p>The HLA Standard Library is an extensive collection of pre-made routines and macros (like the stdout.put macro described above) that simplify programming by preventing programmers from starting from scratch for each new application. Perhaps equally important, the HLA Standard Library allows programmers to write portable applications that run under Windows or Linux by simply recompiling the <a href="Source_code" title="Source code">source code</a>. Similar to the <a href="C_standard_library" title="C standard library">C standard library</a> for the programming language <a href="C_(programming_language)" title="C (programming language)">C</a>, the HLA Standard Library allows users to abstract away low-level <a href="Operating_system" title="Operating system">operating system</a> (OS) calls, so the same set of OS <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interfaces</a> (APIs) can serve for all operating systems that HLA supports. While an assembly language allows making any needed OS calls, using the HLA Standard Library API set simplifies writing OS-portable programs.
</p><p>The HLA Standard Library provides thousands of functions, procedures, and macros. As of mid-2010 for HLA v2.12, the library included functions in these categories (though the list changes over time):
</p>
<ul><li>Command-line argument processing</li>
<li>Array (dynamic) declaration and manipulation</li>
<li>Bit manipulation</li>
<li>Blob (binary large object) manipulation</li>
<li>Character manipulation</li>
<li>Conversions</li>
<li>Character set manipulation</li>
<li>Date and time functions</li>
<li>Object-oriented file I/O</li>
<li>Standard file I/O</li>
<li>File system manipulation functions, e.g., delete, rename, change directory</li>
<li>HLA-related declarations and functions</li>
<li>The HLA Object Windows Library: object-oriented framework for Win32 programming</li>
<li>Linked list manipulation</li>
<li>Mathematical functions</li>
<li>Memory allocation and management</li>
<li>FreeBSD-specific APIs</li>
<li>Linux-specific APIs</li>
<li>MacOS-specific APIs</li>
<li>Win32-specific APIs</li>
<li>Text console functions</li>
<li>Coroutine support</li>
<li>Environment variable support</li>
<li>Exception handling support</li>
<li>Memory-mapped file support</li>
<li>Sockets and client–server object support</li>
<li>Thread and synchronization support</li>
<li>Timer functions</li>
<li>Pattern matching support for regular expressions and context-free languages</li>
<li>Random number generators</li>
<li>Remote procedure call support</li>
<li>Standard error output functions</li>
<li>Standard output functions</li>
<li>Standard input functions</li>
<li>String functions</li>
<li>Table (associative) support</li>
<li>Zero-terminated string functions</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Design">Design</h3></div>
<p>The HLA v2.x language system is a command-line driven tool that consists of several components, including a <i>shell</i> program (e.g., hla.exe under Windows), the HLA language compiler (e.g., hlaparse.exe), a low-level translator (e.g., the HLABE, or HLA Back Engine), a <a href="Linker_(computing)" title="Linker (computing)">linker</a> (link.exe under Windows, ld under Linux), and other tools such as a resource compiler for Windows. Versions before 2.0 relied on an external assembler back end; versions 2.x and later of HLA use the built-in HLABE as the back-end object code formatter.
</p><p>The HLA <i>shell</i> application processes command line parameters and routes appropriate files to each program in the HLA system. It accepts <code>.hla</code> files (HLA source files), <code>.asm</code> files (source files for MASM, TASM, FASM, NASM, or Gas assemblers), <code>.obj</code> files for input to the linker, and <code>.rc</code> files (for use by a resource compiler).
</p>
<div class="mw-heading mw-heading3"><h3 id="Source_code_translation">Source code translation</h3></div>
<p>Originally, the HLA v1.x tool compiled its source code into an intermediate source file that a <i>back-end</i> assembler such as MASM, TASM, flat assembler (<a href="FASM" title="FASM">FASM</a>), <a href="Netwide_Assembler" title="Netwide Assembler">Netwide Assembler</a> (NASM), or <a href="GNU_Assembler" title="GNU Assembler">GNU Assembler</a> (Gas) would translate into the low-level object code file. As of HLA v2.0, HLA included its own <i>HLA Back Engine</i> (HLABE) that provided the low-level object code translation. However, via various command-line parameters, HLA v2.x can still translate an HLA source file into a source file compatible with one of these other assemblers.
</p>
<div class="mw-heading mw-heading3"><h3 id="HLA_Back_Engine">HLA Back Engine</h3></div>
<p>The HLA Back Engine (HLABE) is a compiler back end that translates an internal intermediate language into low-level <a href="Portable_Executable" title="Portable Executable">Portable Executable</a> (PE), Common Object File Format (<a href="COFF" title="COFF">COFF</a>), <a href="Executable_and_Linkable_Format" title="Executable and Linkable Format">Executable and Linkable Format</a> (ELF), or <a href="Mach-O" title="Mach-O">Mach-O</a> object code. An HLABE <i>program</i> mainly consists of data (byte) emission statements, 32-bit relocatable address statements, x86 control-transfer instructions, and various directives. In addition to translating byte and relocatable address statements into the low-level object code format, HLABE also handles branch-displacement optimization (picking the shortest possible form of a branch instruction).
</p><p>Although the HLABE is incorporated into the HLA v2.x compiler, it is a separate product. It is public domain and open source (hosted on <a href="SourceForge.net" class="mw-redirect" title="SourceForge.net">SourceForge.net</a>).
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Comparison_of_assemblers" title="Comparison of assemblers">Comparison of assemblers</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20180329211639/http://oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html">"<i>The Art of Assembly Language Programming</i>"</a>. Archived from <a rel="nofollow" class="external text" href="https://oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html">the original</a> on 2018-03-29<span class="reference-accessdate">. Retrieved <span class="nowrap">2010-02-12</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239549316">
/* start https://en.wikipedia.org/ */


.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}


/* end https://en.wikipedia.org/ */
</style><div class="refbegin" style="">
<ul><li>Richard Blum, <i>Professional assembly language</i>, Wiley, 2005, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-7645-7901-0</bdi>, p.&nbsp;42</li>
<li><a href="Randall_Hyde" title="Randall Hyde">Randall Hyde</a>, <i>Write Great Code: Understanding the machine</i>, <a href="No_Starch_Press" title="No Starch Press">No Starch Press</a>, 2004, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-59327-003-8</bdi>, pp.&nbsp;14–15 and used throughout the book</li>
<li><a href="Randall_Hyde" title="Randall Hyde">Randall Hyde</a>, <i>The Art of Assembly Language, 2nd Edition</i>, <a href="No_Starch_Press" title="No Starch Press">No Starch Press</a>, 2010, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-59327-207-3</bdi>, used throughout the book</li></ul>
</div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li>Paul Panks (June 29, 2005), <i><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100322225344/http://www.linuxjournal.com/article/8408">HLA: The High Level Assembly Programming Language</a></i>, <a href="Linux_Journal" title="Linux Journal">Linux Journal</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://www.plantation-productions.com/Webster">Official website</a></span></span></li>
<li><a rel="nofollow" class="external text" href="https://www.plantation-productions.com/Webster/HighLevelAsm/dnld.html">Downloads for Windows, macOS, and Linux</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="x86_assembly_topics102" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="x86_assembly_topics102" style="font-size:114%;margin:0 4em">x86 assembly topics</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Topics</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Assembly_language" title="Assembly language">Assembly language</a></li>
<li><a href="Comparison_of_assemblers" title="Comparison of assemblers">Comparison of assemblers</a></li>
<li><a href="Disassembler" title="Disassembler">Disassembler</a></li>
<li><a href="Instruction_set_architecture" title="Instruction set architecture">Instruction set</a></li>
<li><a href="Low-level_programming_language" title="Low-level programming language">Low-level programming language</a></li>
<li><a href="Machine_code" title="Machine code">Machine code</a></li>
<li><a href="Microassembler" title="Microassembler">Microassembler</a></li>
<li><a href="X86_assembly_language" title="X86 assembly language">x86 assembly language</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Comparison_of_assemblers#x86_assemblers" title="Comparison of assemblers">Assemblers</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="A86_(software)" title="A86 (software)">A86/A386</a></li>
<li><a href="FASM" title="FASM">Flat Assembler</a> (FASM)</li>
<li><a href="GNU_Assembler" title="GNU Assembler">GNU Assembler</a> (GAS)</li>
<li> (HLA)</li>
<li><a href="Microsoft_Macro_Assembler" title="Microsoft Macro Assembler">Microsoft Macro Assembler</a> (MASM)</li>
<li><a href="Netwide_Assembler" title="Netwide Assembler">Netwide Assembler</a> (NASM)</li>
<li><a href="Turbo_Assembler" title="Turbo Assembler">Turbo Assembler</a> (TASM)</li>
<li><a href="Open_Watcom_Assembler" title="Open Watcom Assembler">Open Watcom Assembler</a> (WASM)</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Programming<br>issues</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Call_stack" title="Call stack">Call stack</a></li>
<li><a href="FLAGS_register" title="FLAGS register">Flags</a>
<ul><li><a href="Carry_flag" title="Carry flag">Carry flag</a></li>
<li><a href="Direction_flag" title="Direction flag">Direction flag</a></li>
<li><a href="Interrupt_flag" title="Interrupt flag">Interrupt flag</a></li>
<li><a href="Overflow_flag" title="Overflow flag">Overflow flag</a></li>
<li><a href="Zero_flag" title="Zero flag">Zero flag</a></li></ul></li>
<li><a href="Memory_address" title="Memory address">Memory address</a></li>
<li><a href="Opcode" title="Opcode">Opcode</a></li>
<li><a href="Program_counter" title="Program counter">Program counter</a></li>
<li><a href="Processor_register" title="Processor register">Processor register</a></li>
<li><a href="X86_calling_conventions" title="X86 calling conventions">Calling conventions</a></li>
<li><a href="X86_instruction_listings" title="X86 instruction listings">Instruction listings</a></li>
<li><a href="X86#x86_registers" title="X86">Registers</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-21" href="https://en.wikipedia.org/wiki/?title=High_Level_Assembly&amp;oldid=1286745221">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>